﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Bostik.Common.Infos;
using Business; 
using System.IO;
using System.Diagnostics;


namespace Bostik
{
    public partial class Frm_Consulta_Predios_Contrato : Form
    {
        OpenFileDialog BuscarImagen = new OpenFileDialog();
        private int RowIndex = -1;

        public Frm_Consulta_Predios_Contrato()
        {
            InitializeComponent();
        }                            

        private void Frm_Consulta_Clientes_Load(object sender, EventArgs e)
        {
            //dateTimePicker1.Format = DateTimePickerFormat.Custom;
            //dateTimePicker1.CustomFormat = "dd/MM/yyyy";


            AccesoBusiness negocio = new AccesoBusiness();


            DataTable resultado = negocio.LlenadoCombos("cmbPrediosProc");

            cmbPredio.DisplayMember = "DescripcionLocal";
            cmbPredio.ValueMember = "IdPredio";
            cmbPredio.DataSource = resultado;

          
        }

        private void button2_Click(object sender, EventArgs e)
        {
            BuscarImagen.Filter = "Archivos de Imagen|*.jpg";
            //Aquí incluiremos los filtros que queramos.

            BuscarImagen.FileName = "";

            BuscarImagen.Title = "Agregar Documento, Foto, Factura";

            BuscarImagen.InitialDirectory = "C:\\";
            //BuscarImagen.FileName = this.textBox1.Text;

            if (BuscarImagen.ShowDialog() == DialogResult.OK)
            {

                /// Si esto se cumple, capturamos la propiedad File Name y la guardamos en el control
                String Direccion = BuscarImagen.FileName;
                this.pictureBox1.ImageLocation = Direccion;

                //Pueden usar tambien esta forma para cargar la Imagen solo activenla y comenten la linea donde se cargaba anteriormente 

                //this.pictureBox1.ImageLocation = textBox1.Text;

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

       
        private void dtFacturas_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {

            Busqueda();
        }

        private void Busqueda()
        {
            AccesoBusiness negocio = new AccesoBusiness();

            if (cmbPredio.SelectedValue == null)
                return;

            int IdPredio = 0;
            if (cmbPredio.Enabled)
            {
                if (!string.IsNullOrEmpty(cmbPredio.SelectedValue.ToString()))
                    IdPredio = Convert.ToInt32(cmbPredio.SelectedValue);
            }
            else
            {
                if (!string.IsNullOrEmpty(txtIdPredio.Text))
                    IdPredio = Convert.ToInt32(txtIdPredio.Text);
            }

            DataSet resultado = negocio.BuscaPredio(IdPredio);

            if (resultado.Tables[0].Rows.Count > 0)
            {
                txtIdPredio.Text = resultado.Tables[0].Rows[0]["IdPredio"].ToString();
                txtDescripcionLocal.Text = resultado.Tables[0].Rows[0]["DescripcionLocal"].ToString();
                txtUbicacion.Text = resultado.Tables[0].Rows[0]["Ubicacion"].ToString();
                txtEmpresa.Text = resultado.Tables[0].Rows[0]["Empresa"].ToString();
                txtAlto.Text = resultado.Tables[0].Rows[0]["Alto"].ToString();
                txtAncho.Text = resultado.Tables[0].Rows[0]["Ancho"].ToString();
                txtLargo.Text = resultado.Tables[0].Rows[0]["Largo"].ToString();
                txtRenta.Text = resultado.Tables[0].Rows[0]["Renta"].ToString();

                dtFacturas.DataSource = resultado.Tables[1];

                dtContratos.DataSource = resultado.Tables[2];

            }
            else
            {
                MessageBox.Show("No existen datos para su busqueda", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {

        }

        private void btnGuardaImagen_Click(object sender, EventArgs e)
        {
            InfoPredios Info = new InfoPredios();

            if (string.IsNullOrEmpty(txtIdPredio.Text))
                return;

            if (string.IsNullOrEmpty(BuscarImagen.FileName))
                return;

            Info.IdPredio = Convert.ToInt32(txtIdPredio.Text);
            Info.DescripcionDoc = txtDescripcionDoc.Text;
            Info.Archivo = StreamFile(BuscarImagen.FileName);
            Info.NomDocumento = BuscarImagen.SafeFileName;

            AccesoBusiness negocio = new AccesoBusiness();

            DataSet resultado = negocio.GuardaArchivoPredio(Info);

            MessageBox.Show("Imagen Guardada", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Busqueda();

            
        }

        private byte[] StreamFile(string filename)
        {
            FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);

            // Create a byte array of file stream length
            byte[] ImageData = new byte[fs.Length];

            //Read block of bytes from stream into the byte array
            fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length));

            //Close the File Stream
            fs.Close();
            return ImageData; //return the byte data
        }

       

        private void dtFacturas_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {

            AccesoBusiness negocio = new AccesoBusiness();


            RowIndex = e.RowIndex;
            if (e.RowIndex < 0)
                return;


            DataSet resultado = negocio.BuscaPredioArchivos(Convert.ToInt32(this.dtFacturas.Rows[e.RowIndex].Cells["IdPredio"].Value), Convert.ToInt32(dtFacturas.Rows[e.RowIndex].Cells["IdArchivo"].Value));

            string Nombre = Convert.ToString(dtFacturas.Rows[e.RowIndex].Cells["NombreArchivo"].Value);


            byte[] bytes = (byte[])resultado.Tables[0].Rows[0]["Archivo"];

            string Path = "C:\\TemporalesContratos\\Archivos" + dtFacturas.Rows[e.RowIndex].Cells["IdPredio"].Value.ToString() + "\\";
            if (!Directory.Exists(Path))
            {
                Directory.CreateDirectory(Path);
            }
            if (!File.Exists(Path + Nombre))
            {
                File.WriteAllBytes(Path + Nombre, bytes);
            }

            Process.Start(Path + Nombre);

        }

        private void dtContratos_CellDoubleClick_1(object sender, DataGridViewCellEventArgs e)
        {
            AccesoBusiness negocio = new AccesoBusiness();



            RowIndex = e.RowIndex;
            if (e.RowIndex < 0)
                return;

            DataSet resultado = negocio.BuscaContratoArchivos(Convert.ToInt32(this.dtContratos.Rows[e.RowIndex].Cells["IdPredio"].Value), Convert.ToInt32(dtContratos.Rows[e.RowIndex].Cells["IdArchivo"].Value));

            string Nombre = Convert.ToString(dtContratos.Rows[e.RowIndex].Cells["NombreArchivo"].Value);


            byte[] bytes = (byte[])resultado.Tables[0].Rows[0]["Archivo"];

            string Path = "C:\\TemporalesContratos\\Contratos" + dtContratos.Rows[e.RowIndex].Cells["IdPredio"].Value.ToString() + "\\";
            if (!Directory.Exists(Path))
            {
                Directory.CreateDirectory(Path);
            }
            if (!File.Exists(Path + Nombre))
            {
                File.WriteAllBytes(Path + Nombre, bytes);
            }

            Process.Start(Path + Nombre);
        }

        private void btnBorrar_Click(object sender, EventArgs e)
        {
            if (RowIndex > 0)
            {
                InfoPrediosContrato Info = new InfoPrediosContrato();
                Info.IdPredio = Convert.ToInt32(this.dtFacturas.Rows[RowIndex].Cells["IdPredio"].Value.ToString());
                Info.IdArchivo = Convert.ToInt32(this.dtFacturas.Rows[RowIndex].Cells["IdArchivo"].Value.ToString());

                AccesoBusiness negocio = new AccesoBusiness();

                DataSet resultado = negocio.EliminaArchivoPredios(Info);
                MessageBox.Show("Su archivo fue borrado", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Busqueda();
            }
        }

        private void dtFacturas_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            
            RowIndex = e.RowIndex;
        }

    }
}
